home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / vscreen.zip / VS-DEMO.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-01  |  7KB  |  204 lines

  1.  
  2. program TestVirtualScreenUnit;
  3. uses
  4.   Dos, Crt,
  5.   Vscreen;         (* VirtualScreen Unit                            *)
  6.  
  7. const
  8.   Screen1 : VsPtr = Nil; (* Message Pad                             *)
  9.   Screen2 : VsPtr = Nil; (* Attr-chart                              *)
  10.   Screen3 : VsPtr = Nil; (* Main display Vscreen                    *)
  11.   Screen4 : VsPtr = Nil; (* Buffer Vscreen                          *)
  12. var
  13.   DUD          : char; (* "Press <ANY KEY>" character               *)
  14.   Loop1, Loop2 : word;
  15.  
  16.   procedure BuildAttrChart;
  17.   begin
  18.     ClrVscr(Screen2, $37);
  19.     VSetVsXYattr(Screen2, 16, 15, 9, $0F);
  20.     VwriteStringVs(Screen2, '0123456789ABCDEF', 16, 9, $0F);
  21.     VSetVsXYattr(Screen2, 16, 17, 9, $0F);
  22.     VwriteStringVs(Screen2, 'FIRST NUMBER', 9, 11, $3F);
  23.     VwriteStringVs(Screen2, 'BACKGROUND COLOR', 12, 9, $3F);
  24.     WriteStringVs(Screen2, 'SECOND NUMBER = TEXT COLOR', false, 29, 5, $3F);
  25.     WriteStringVs(Screen2,
  26.                   ' 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F ',
  27.                   false, 20, 7, $0F);
  28.     for Loop1 := 0 to 15 do
  29.       for Loop2 := 0 to 15 do
  30.         WriteStringVs(Screen2, ' X ', false, (20 + (Loop2 * 3)),
  31.                       (9 + Loop1), (Loop2 + (Loop1 Shl 4)));
  32.   end;
  33.  
  34.   procedure BuildMessages1;
  35.   begin
  36.     ClrVscr(Screen1, $7F);
  37.                              (* Message 1                             *)
  38.     SetVsWindowAttr(Screen1, 1, 47, 11, 20, $17);
  39.     WriteStringVs(Screen1, 'SIMPLE TEST PROGRAM FOR VSCREEN UNIT',
  40.                   false, 6, 13, $1F);
  41.     WriteStringVs(Screen1, 'Every screen you see in this',
  42.                   false, 8, 15, $17);
  43.     WriteStringVs(Screen1, 'program has been pre-built in RAM.',
  44.                   false, 8, 16, $17);
  45.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  46.                   false, 12, 18, $17);
  47.     SetVsXYattr(Screen1, 7, 7, 15, $0F);
  48.                              (* Message 2                             *)
  49.     WriteStringVs(Screen1, 'SO WHAT DOES IT DO????',
  50.                   false, 13, 3, $7F);
  51.     WriteStringVs(Screen1, 'This program will show how screen-',
  52.                   false, 8, 5, $7F);
  53.     WriteStringVs(Screen1, 'attributes are set hexidecimally.',
  54.                   false, 8, 6, $7F);
  55.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  56.                   false, 12, 8, $7F);
  57.   end;
  58.  
  59.   procedure BuildMessages2;
  60.   begin
  61.     ClrVscr(Screen1, $70);
  62.                              (* Message 3                             *)
  63.     WriteStringVs(Screen1, 'Underneath this window is a hexidecimal',
  64.                   false, 3, 3, $70);
  65.     WriteStringVs(Screen1, 'color attribute chart. To determine the',
  66.                   false, 3, 4, $70);
  67.     WriteStringVs(Screen1, 'hexidecimal attribute for the color you',
  68.                   false, 3, 5, $70);
  69.     WriteStringVs(Screen1, 'want, just...',
  70.                   false, 3, 6, $70);
  71.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  72.                   false, 9, 8, $7F);
  73.                              (* Message 4                             *)
  74.     WriteStringVs(Screen1, 'Look-up the background color',
  75.                   false, 3, 13, $70);
  76.     WriteStringVs(Screen1, 'from this collumn. This is',
  77.                   false, 3, 14, $70);
  78.     WriteStringVs(Screen1, 'the first digit of the Hex-',
  79.                   false, 3, 15, $70);
  80.     WriteStringVs(Screen1, 'attribute. Green is number 2',
  81.                   false, 3, 16, $70);
  82.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  83.                   false, 4, 18, $7F);
  84.                              (* Message 5                             *)
  85.     WriteStringVs(Screen1, 'Next, look-up the text color',
  86.                   false, 33, 13, $70);
  87.     WriteStringVs(Screen1, 'from this row. White is',
  88.                   false, 33, 14, $70);
  89.     WriteStringVs(Screen1, 'number F. This is the second',
  90.                   false, 33, 15, $70);
  91.     WriteStringVs(Screen1, 'digit of the Hex-attribute.',
  92.                   false, 33, 16, $70);
  93.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  94.                   false, 34, 18, $7F);
  95.   end;
  96.  
  97.   procedure BuildMessages3;
  98.   begin
  99.     ClrVscr(Screen1, $70);
  100.                              (* Message 6                             *)
  101.     WriteStringVs(Screen1, 'So the two hex-numbers combined',
  102.                   false, 3, 3, $70);
  103.     WriteStringVs(Screen1, 'equal 2F hexidecimal. Which is',
  104.                   false, 3, 4, $70);
  105.     WriteStringVs(Screen1, 'white text on a green background',
  106.                   false, 3, 5, $70);
  107.     WriteStringVs(Screen1, 'Here''s the full chart:',
  108.                   false, 3, 6, $70);
  109.     WriteStringVs(Screen1, 'Press <ENTER> to continue:',
  110.                   false, 6, 8, $7F);
  111.   end;
  112.                  (* The following procedure ONLY works for EGA+ modes *)
  113.   procedure  Blink(BlinkOn : boolean);
  114.   var
  115.     Regs : registers;
  116.   begin
  117.     with Regs do
  118.       begin
  119.         AX := $1003;
  120.         BX := Ord(BlinkOn);
  121.       end;
  122.     Intr($10, Regs)
  123.   end;
  124.  
  125. BEGIN
  126.   if NOT ColorMode then
  127.     begin
  128.       WriteLn(' This demo can only be run in color-text mode');
  129.       Halt(1);
  130.     end;
  131.   VsInit(Screen1);  (* Allocate VirtualScreens on the Heap            *)
  132.   VsInit(Screen2);
  133.   VsInit(Screen3);
  134.   VsInit(Screen4);
  135.   BuildAttrChart;
  136.   BuildMessages1;
  137.   MoveVsWindowBlock(Screen1, 1, 47, 11, 20,  (* Message 1             *)
  138.                     Screen3, 17, 63, 6, 15);
  139.   DisplayVs(Screen3);
  140.   MoveVsWindowBlock(Screen1, 1, 47, 1, 10,   (* Message 2             *)
  141.                     Screen3, 17, 63, 6, 15);
  142.   ReadLn;
  143.  
  144.  
  145.   DisplayVs(Screen3);                        (* Message 2             *)
  146.   BuildMessages2;
  147.   Screen4^ := Screen2^;
  148.   ClrVscrWindow(Screen4, 20, 67, 17, 24, $F);
  149.   WriteStringVs(Screen4, '* CENSORED *', false, 36, 21, $70);
  150.   Screen3^ := Screen4^;
  151.   MoveVsWindowBlock(Screen1, 1, 44, 1, 10,   (* Message 3             *)
  152.                     Screen3, 22, 65, 12, 21);
  153.   ReadLn;
  154.  
  155.  
  156.   DisplayVs(Screen3);                        (* Message 3             *)
  157.   Screen3^ := Screen4^;
  158.   MoveVsWindowBlock(Screen1, 1, 32, 11, 20,  (* Message 4             *)
  159.                     Screen3, 27, 58, 9, 18);
  160.   WriteStringVs(Screen3, '<--------', false, 18, 11, $7F);
  161.   ReadLn;
  162.  
  163.  
  164.   DisplayVs(Screen3);                        (* Message 4             *)
  165.   Screen3^ := Screen4^;
  166.   MoveVsWindowBlock(Screen1, 31, 63, 11, 20, (* Message 5             *)
  167.                     Screen3, 36, 68, 13, 22);
  168.   VSetVsXYattr(Screen3, 5, 65, 8, $7F);
  169.   VWriteStringVs(Screen3, '^||||||', 66, 8, $7F);
  170.   VSetVsXYattr(Screen3, 5, 67, 8, $7F);
  171.   ReadLn;
  172.  
  173.  
  174.   DisplayVs(Screen3);                         (* Message 5            *)
  175.   Screen3^ := Screen4^;
  176.   BuildMessages3;
  177.   MoveVsWindowBlock(Screen1, 1, 37, 1, 10,  (* Message 6              *)
  178.                     Screen3, 26, 62, 12, 21);
  179.   ReadLn;
  180.  
  181.  
  182.   DisplayVs(Screen3);                       (* Message 6              *)
  183.   Screen3^ := Screen2^;
  184.   WriteStringVs(Screen3, 'Press <ENTER> to turn the blink-bit off',
  185.                 false, 23, 3, $70);
  186.   ReadLn;
  187.  
  188.  
  189.   DisplayVs(Screen3);
  190.   WriteStringVs(Screen3, '   Press <ENTER> to quit demo-program    ',
  191.                 false, 22, 3, $70);
  192.   ReadLn;
  193.  
  194.  
  195.   DisplayVs(Screen3);
  196.   Blink(false);
  197.   ReadLn;
  198.  
  199.  
  200.   Blink(true);
  201.   ClrScr; NormVideo
  202. END.
  203.  
  204.